package com.misyi.designpattern.mediator;

/**
 * 没有使用中介者模式
 *
 * @author licong
 * @date 2021-09-13 下午10:06
 */
public class WithoutMediatorPatternDemo {

    public static void main(String[] args) {
        ModuleA moduleA = new ModuleA();
        ModuleB moduleB = new ModuleB();
        ModuleC moduleC = new ModuleC();
        moduleA.execute();
        moduleB.execute();
        moduleC.execute();

        // 模块之间有非常复杂的相互调用
        // 每个模块都需要care其他模块, 耦合非常严重, 后期修改自己的代码, 可能会影响到其他模块
    }


    public static class ModuleA {

        // 模块A 调用模块B和模块C
        public void execute() {
            ModuleB moduleB = new ModuleB();
            ModuleC moduleC = new ModuleC();
            moduleB.execute("模块A");
            moduleC.execute("模块A");
        }

        public void execute(String invoker) {
            System.out.println(invoker + "在调用模块A的功能");
        }
    }

    public static class ModuleB {

        // 模块B 调用模块A和模块C
        public void execute() {
            ModuleA moduleA = new ModuleA();
            ModuleC moduleC = new ModuleC();
            moduleA.execute("模块B");
            moduleC.execute("模块B");
        }

        public void execute(String invoker) {
            System.out.println(invoker + "在调用模块B的功能");
        }
    }

    public static class ModuleC {

        // 模块C 调用模块A和模块B
        public void execute() {
            ModuleA moduleA = new ModuleA();
            ModuleB moduleB = new ModuleB();
            moduleA.execute("模块C");
            moduleB.execute("模块C");
        }

        public void execute(String invoker) {
            System.out.println(invoker + "在调用模块C的功能");
        }
    }


}
